/**
 * 用户API接口
 * 职责：纯粹的API调用，不处理Token存储
 */
import { http, uploadFile } from "@/utils/core/http"
import { apiWrapper, apiWrapperWithAuth } from "@/utils/core/api-wrapper"

// 用户注册
export function register(data) {
  return apiWrapper(() => http.post("/user/register", data));
}

// 用户登录
export function login(data) {
  return apiWrapper(() => http.post("/user/login", data));
}

// 获取用户信息 - 暂时返回store中的用户信息
export function getUserInfo() {
  return apiWrapper(() => 
    Promise.resolve({
      code: 200,
      data: null,
      message: "请从store中获取用户信息"
    })
  );
}

// 用户登出 - 暂时只做前端登出
export function logout() {
  return apiWrapper(() => 
    Promise.resolve({
      code: 200,
      data: null,
      message: "登出成功"
    })
  );
}

// 更新用户信息 - 使用现有的带userId的接口
export function updateUserInfo(data) {
  return apiWrapperWithAuth((userId) => 
    http.put(`/user/profile/${userId}`, data)
  );
}

// 上传用户头像 - 使用现有的带userId的接口
export function uploadAvatar(file) {
  return apiWrapperWithAuth((userId) => 
    uploadFile(`/user/avatar/${userId}`, file)
  );
}

// 修改密码 - 使用现有的带userId的接口
export function changePassword(data) {
  return apiWrapperWithAuth((userId) => 
    http.put(`/user/password/${userId}`, data)
  );
}

// 获取用户统计信息 - 暂时返回空数据
export function getUserStats(userId) {
  return apiWrapper(() => 
    Promise.resolve({
      code: 200,
      data: {
        totalSubmissions: 0,
        acceptedSubmissions: 0,
        totalProblems: 0,
        solvedProblems: 0
      },
      message: "统计功能暂未实现"
    })
  );
}

// 以下管理员接口暂未实现，返回提示信息

// 获取用户列表（管理员）
export function getUserList(params) {
  return apiWrapper(() => 
    Promise.reject(new Error("管理员用户列表接口暂未实现"))
  );
}

// 创建用户（管理员）
export function createUser(data) {
  return apiWrapper(() => 
    Promise.reject(new Error("创建用户接口暂未实现"))
  );
}

// 更新用户（管理员）
export function updateUser(id, data) {
  return apiWrapper(() => 
    Promise.reject(new Error("更新用户接口暂未实现"))
  );
}

// 删除用户（管理员）
export function deleteUser(id) {
  return apiWrapper(() => 
    Promise.reject(new Error("删除用户接口暂未实现"))
  );
}

// 刷新Token
export function refreshToken(refreshToken) {
  return apiWrapper(() => 
    Promise.reject(new Error("刷新Token接口暂未实现"))
  );
}
